package com.wcx.replace_img;

import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 第二个版本
 * 首先将图片 用picgo传到 码云上 , 因为码云上的图片地址是可预测的, 所以一股脑传上去 即可 , 以后有道云会员 也不用开了, 笑了 哈哈哈哈!!!!
 * 图片url范例:https://gitee.com/weichenxu1234/test_upload_img/raw/master/java/image-20231115104334350.png
 * <p>
 * ToDo 注意:源文件中的图片 要改成单独一行 否则会吞噬 非图片的文字内容哦!!!!
 *
 * @author weichenxu
 */
public class DemoV2 {

    //源md文件的本地 全路径
    public static final String OLD_MD_FILE_ALL_PATH = "C:\\百度云下载文件夹\\若依入门\\笔记\\低代码平台-若依.md";

    //源md文件的本地图片路径开头字符串
    private static final String IMG_DIR_HEAD_PATH = "assets/image-";


    //目标新文件全路径地址
    public static final String TARGET_NEW_FILE_ALL_PATH = "C:\\Users\\wcx\\Desktop\\md生成文件夹\\"
            + OLD_MD_FILE_ALL_PATH.split("\\\\")[OLD_MD_FILE_ALL_PATH.split("\\\\").length - 1];


    public static void main(String[] args) throws IOException {

        //读 原文件的图片相对路径
        BufferedReader bufferedReader1 = new BufferedReader(new InputStreamReader(
                new FileInputStream(OLD_MD_FILE_ALL_PATH), "utf8"));

        //如果目标文件不存在
        if (!new File(TARGET_NEW_FILE_ALL_PATH).exists()) {
            boolean createNewFileFlag = new File(TARGET_NEW_FILE_ALL_PATH).createNewFile();
            //如果创建成功了 , 就打印一句 已生成.
            if (createNewFileFlag) {
                System.out.println("生成了文件");
            }
        }

        //创建一个输出流
        BufferedWriter bufferedWriter1 = new BufferedWriter(new OutputStreamWriter(
                new FileOutputStream(TARGET_NEW_FILE_ALL_PATH), "utf8"));

        //每个原文件的图片本地相对路径
        String oneLine = null;
        //记录有多少张图片
        int imgTotal = 0;
        while ((oneLine = bufferedReader1.readLine()) != null) {
            if (oneLine.contains(IMG_DIR_HEAD_PATH)) {
                //把原文件图片 这行打印出来
                System.out.println(oneLine);
                //判断原文件的图片 是否合法 是否被包含在 有道图片md文件
                String oneLineResult = checkOldUrlExist(oneLine);

                //写一行 有道云图片的内容
                bufferedWriter1.write(oneLineResult);
                //换行
                bufferedWriter1.newLine();

                //记录一次 图片总数
                imgTotal++;
            } else {
                //写一行 非图片的内容
                bufferedWriter1.write(oneLine);
                //换行
                bufferedWriter1.newLine();
            }
        }

        //打印图片总数量 是为了不让 图片数量偏差过于离谱
        //记录一共有多少张图片,最后自己查看一下 ,assert文件夹中有多少张图片
        System.out.println(imgTotal + "张图片");
        //释放资源
        bufferedReader1.close();
        bufferedWriter1.close();


    }

    /**
     * 判断这一行 合法吗
     * 是否存在多行图片
     *
     * @param oneLine
     * @return
     */
    private static String checkOldUrlExist(String oneLine) {
        //超找原文件 图片文件名
        String imgFileName = "";

//        Pattern pattern = Pattern.compile("[0-9]{17,18}");
        Pattern pattern = Pattern.compile("image-[0-9a-zA-Z]{13,32}.png");
        Matcher matcher = pattern.matcher(oneLine);
        //匹配到了这行是图片
        if (matcher.find()) {
            imgFileName = matcher.group(0);
            System.out.println("查找原文件的文件名 结果:" + imgFileName);
            return "![" + imgFileName + "](" + "https://gitee.com/weichenxu1234/test_upload_img/raw/master/java/" + imgFileName + ")";
        } else {
            imgFileName = oneLine;
            System.out.println("注意 这里取不到图片名 :" + oneLine);
        }

        System.out.println("未替换");
        return oneLine;

    }
}
